#ifndef CHEMICAL_TABLE_H
#define CHEMICAL_TABLE_H

#include <ctype.h>
#include <string.h>

#define CHEMICAL_ELEMENTS_COUNT      (104)
#define CHEMICAL_ELEMENT_NAME_LENGTH (3)

class ChemicalTable
{
public:
	static char ChemicalElements[CHEMICAL_ELEMENTS_COUNT][CHEMICAL_ELEMENT_NAME_LENGTH];

	static int GetChemicalElementNumber(char *name)
	{
		int i;
		int j;
		int num = -1;
		int len = strlen(name);
		char *lowerName = new char[len + 1];
		
		for (i = 0; i < len; i++)
		{
			lowerName[i] = tolower(name[i]);
		}
		lowerName[i] = '\0';

		for (i = 0; i < CHEMICAL_ELEMENTS_COUNT; i++)
		{
			len = strlen(ChemicalElements[i]);
			char *chemElem = new char[len + 1];

			for (j = 0; j < len; j++)
			{
				chemElem[j] = tolower(ChemicalElements[i][j]);
			}
			chemElem[j] = '\0';

			if (!strcmp(lowerName, chemElem))
			{
				num = i;
				delete[] chemElem;
				break;
			}

			delete[] chemElem;
		}

		delete[] lowerName;
		return num;
	}
};

char ChemicalTable::ChemicalElements[CHEMICAL_ELEMENTS_COUNT][CHEMICAL_ELEMENT_NAME_LENGTH] = 
                                    { "H", "He", "Li", "Be", "B", "C", "N", "O", "F",
                                      "Ne", "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar",
                                      "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co",
                                      "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr",
                                      "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh",
                                      "Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe",
                                      "Cs", "Ba", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu",
                                      "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu", "Hf",
                                      "Ta", "W", "Re", "Os", "Ir", "Pt", "Au", "Hg", "Tl",
                                      "Pb", "Bi", "Po", "At", "Rn", "Fr", "Ra", "Ac", "Th",
                                      "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Ci", "Es",
                                      "Fm", "Md", "No", "Lr", "Ku" };

#endif